home *** CD-ROM | disk | FTP | other *** search
- import java.awt.Graphics;
- import java.awt.Polygon;
- import java.awt.Rectangle;
- import java.io.DataInputStream;
- import java.io.IOException;
-
- final class ColBez extends ColVecItm {
- private static int m_tolPass = 65536;
- private static int m_recurseLvl;
- private static int m_x;
- private static int m_y;
- private static int m_a;
- private static int m_b;
- private static int m_b0x;
- private static int m_b0y;
- private static int m_b1x;
- private static int m_b1y;
- private static int m_b2x;
- private static int m_b2y;
- private static int m_b3x;
- private static int m_b3y;
- private static boolean m_chk;
- private static float m_xOrg;
- private static float m_yOrg;
- private static float m_mag;
-
- public final void CollectBezPoints() {
- m_xOrg = super.m_colGraphicObj.m_xOrg;
- m_yOrg = super.m_colGraphicObj.m_yOrg;
- m_mag = super.m_colGraphicObj.m_mag;
-
- for(int var1 = 0; var1 < super.m_numSegs; var1 += 4) {
- super.m_poly.addPoint((int)((super.m_ptArryX[var1] + 0.5F - super.m_colGraphicObj.m_xOrg) * super.m_colGraphicObj.m_mag), (int)((super.m_ptArryY[var1] + 0.5F - super.m_colGraphicObj.m_yOrg) * super.m_colGraphicObj.m_mag));
- if (super.m_ptArryX[var1] == super.m_ptArryX[var1 + 1] && super.m_ptArryY[var1] == super.m_ptArryY[var1 + 1] && super.m_ptArryX[var1 + 2] == super.m_ptArryX[var1 + 3] && super.m_ptArryY[var1 + 2] == super.m_ptArryY[var1 + 2]) {
- super.m_poly.addPoint((int)((super.m_ptArryX[var1 + 3] + 0.5F - super.m_colGraphicObj.m_xOrg) * super.m_colGraphicObj.m_mag), (int)((super.m_ptArryY[var1 + 3] + 0.5F - super.m_colGraphicObj.m_yOrg) * super.m_colGraphicObj.m_mag));
- } else {
- m_b0x = (int)(super.m_ptArryX[var1] * 65536.0F);
- m_b0y = (int)(super.m_ptArryY[var1] * 65536.0F);
- m_b1x = (int)(super.m_ptArryX[var1 + 1] * 65536.0F);
- m_b1y = (int)(super.m_ptArryY[var1 + 1] * 65536.0F);
- m_b2x = (int)(super.m_ptArryX[var1 + 2] * 65536.0F);
- m_b2y = (int)(super.m_ptArryY[var1 + 2] * 65536.0F);
- m_b3x = (int)(super.m_ptArryX[var1 + 3] * 65536.0F);
- m_b3y = (int)(super.m_ptArryY[var1 + 3] * 65536.0F);
- this.TolBezierRecurs();
- }
- }
-
- }
-
- public ColBez(DataInputStream var1, int var2, int var3, ColGrph var4, Graphics var5) throws IOException {
- super(var1, var3, var4);
- super.m_itemType = var2;
- super.m_numSegs = var1.readShort();
- super.m_ptArryX = new float[super.m_numSegs];
- super.m_ptArryY = new float[super.m_numSegs];
-
- for(int var6 = 0; var6 < super.m_numSegs; ++var6) {
- super.m_ptArryX[var6] = (float)var1.readInt() / 65536.0F;
- super.m_ptArryY[var6] = (float)var1.readInt() / 65536.0F;
- }
-
- super.m_poly = new Polygon();
- this.CollectBezPoints();
- super.m_bounds.x = super.m_poly.getBoundingBox().x;
- super.m_bounds.y = super.m_poly.getBoundingBox().y;
- super.m_bounds.width = super.m_poly.getBoundingBox().width;
- super.m_bounds.height = super.m_poly.getBoundingBox().height;
- }
-
- public void draw(Graphics var1) {
- super.m_poly = new Polygon();
- this.CollectBezPoints();
- ((ColVecItm)this).drawPoly(var1);
- }
-
- public Rectangle getBounds() {
- return super.m_bounds;
- }
-
- public final void TolBezierRecurs() {
- int var1 = m_b0x;
- int var2 = m_b0y;
- int var15 = m_b3x;
- int var16 = m_b3y;
- int var3 = (var1 >> 1) + (m_b1x >> 1);
- int var13 = (m_b2x >> 1) + (var15 >> 1);
- m_x = (m_b1x >> 1) + (m_b2x >> 1);
- int var5 = (var3 >> 1) + (m_x >> 1);
- int var11 = (m_x >> 1) + (var13 >> 1);
- int var4 = (var2 >> 1) + (m_b1y >> 1);
- int var14 = (m_b2y >> 1) + (var16 >> 1);
- m_y = (m_b1y >> 1) + (m_b2y >> 1);
- int var6 = (var4 >> 1) + (m_y >> 1);
- int var12 = (m_y >> 1) + (var14 >> 1);
- int var7 = (var5 >> 1) + (var11 >> 1);
- int var8 = (var6 >> 1) + (var12 >> 1);
- m_a = m_x - var7;
- m_b = m_y - var8;
- m_chk = true;
- if ((m_a < 0 ? -m_a : m_a) <= m_tolPass && (m_b < 0 ? -m_b : m_b) <= m_tolPass) {
- m_a = m_b1x - var5;
- m_b = m_b1y - var6;
- if ((m_a < 0 ? -m_a : m_a) <= m_tolPass && (m_b < 0 ? -m_b : m_b) <= m_tolPass) {
- m_a = m_b2x - var11;
- m_b = m_b2y - var12;
- if ((m_a < 0 ? -m_a : m_a) <= m_tolPass && (m_b < 0 ? -m_b : m_b) <= m_tolPass) {
- super.m_poly.addPoint((int)(((float)(var7 + 'ΦÇÇ' >> 16) - m_xOrg) * m_mag), (int)(((float)(var8 + 'ΦÇÇ' >> 16) - m_yOrg) * m_mag));
- super.m_poly.addPoint((int)(((float)(var15 + 'ΦÇÇ' >> 16) - m_xOrg) * m_mag), (int)(((float)(var16 + 'ΦÇÇ' >> 16) - m_yOrg) * m_mag));
- m_chk = false;
- }
- }
- }
-
- if (m_chk) {
- ++m_recurseLvl;
- if (m_recurseLvl < 8) {
- m_b0x = var1;
- m_b0y = var2;
- m_b1x = var3;
- m_b1y = var4;
- m_b2x = var5;
- m_b2y = var6;
- m_b3x = var7;
- m_b3y = var8;
- this.TolBezierRecurs();
- m_b0x = var7;
- m_b0y = var8;
- m_b1x = var11;
- m_b1y = var12;
- m_b2x = var13;
- m_b2y = var14;
- m_b3x = var15;
- m_b3y = var16;
- this.TolBezierRecurs();
- }
-
- m_recurseLvl += -1;
- }
-
- }
- }
-